package com.bbva.kyfb.kyfbdto.firmas.fachada.v01;

import java.io.Serializable;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.xml.bind.annotation.XmlRootElement;

import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;

/**
 * Informacion del usuario para el metodo update de numero aleatorio.
 * 
 * @author xe35008
 * @version 1.0
 */
@XmlRootElement
public class InfoUserReferenceUpdate implements Serializable {

	/** The Constant serialVersionUID. */
	private static final long serialVersionUID = 1L;

	/** Tipo de firma (Host, Servidor). */
	private String sTipoFirma;

	/** Canal asociado a la referencia. */
	private String sCanal;

	/** Banco interno asociado a la referencia. */
	private String sBancoInt;

	/** Referencia a la que esta vinculado el usuario. */
	private String sReferencia;

	/** Codigo de usuario. */
	private String sCodUsuario;

	/** Nif del usuario. */
	private String sNIFUsuario;

	/** Banco producto. */
	private String sBancoProducto;

	/** Producto Servicio. */
	private String sProductoServicio;

	/** Codigo SubProducto. */
	private String sCodSubProducto;

	/** Tipo de firmante que es el usuario. */
	private String sTipoFirmante;

	/** Codigo de aplicacion. */
	private String sCodOrigen;

	/**
	 * Instantiates a new info user reference.
	 */
	public InfoUserReferenceUpdate() {
	}

	/**
	 * Gets the s tipo firmante.
	 * 
	 * @return the sTipoFirmante
	 */
	@NotNull
	@NotEmpty
	public String getsTipoFirmante() {
		return sTipoFirmante;
	}

	/**
	 * Sets the s tipo firmante.
	 * 
	 * @param sTipoFirmante
	 *            the sTipoFirmante to set
	 */
	public void setsTipoFirmante(final String sTipoFirmante) {
		this.sTipoFirmante = sTipoFirmante;
	}

	/**
	 * Gets the s banco producto.
	 * 
	 * @return the sBancoProducto
	 */
	@NotNull
	@NotEmpty
	public String getsBancoProducto() {
		return sBancoProducto;
	}

	/**
	 * Sets the s banco producto.
	 * 
	 * @param sBancoProducto
	 *            the sBancoProducto to set
	 */
	public void setsBancoProducto(final String sBancoProducto) {
		this.sBancoProducto = sBancoProducto;
	}

	/**
	 * Gets the s producto servicio.
	 * 
	 * @return the sProductoServicio
	 */
	@NotNull
	@NotEmpty
	public String getsProductoServicio() {
		return sProductoServicio;
	}

	/**
	 * Sets the s producto servicio.
	 * 
	 * @param sProductoServicio
	 *            the sProductoServicio to set
	 */
	public void setsProductoServicio(final String sProductoServicio) {
		this.sProductoServicio = sProductoServicio;
	}

	/**
	 * Gets the s cod sub producto.
	 * 
	 * @return the sCodSubProducto
	 */
	@NotNull
	@NotEmpty
	public String getsCodSubProducto() {
		return sCodSubProducto;
	}

	/**
	 * Sets the s cod sub producto.
	 * 
	 * @param sCodSubProducto
	 *            the sCodSubProducto to set
	 */
	public void setsCodSubProducto(final String sCodSubProducto) {
		this.sCodSubProducto = sCodSubProducto;
	}

	/**
	 * Gets the s tipo firma.
	 * 
	 * @return the sTipoFirma
	 */
	@NotNull
	@NotEmpty
	@Length(min = 2, max = 2)
	@Pattern(regexp = "FS|FH")
	public String getsTipoFirma() {
		return sTipoFirma;
	}

	/**
	 * Sets the s tipo firma.
	 * 
	 * @param sTipoFirma
	 *            the sTipoFirma to set
	 */
	public void setsTipoFirma(final String sTipoFirma) {
		this.sTipoFirma = sTipoFirma;
	}

	/**
	 * Gets the s canal.
	 * 
	 * @return the sCanal
	 */
	@NotNull
	@NotEmpty
	@Length(min = 4, max = 4)
	public String getsCanal() {
		return sCanal;
	}

	/**
	 * Sets the s canal.
	 * 
	 * @param sCanal
	 *            the sCanal to set
	 */
	public void setsCanal(final String sCanal) {
		this.sCanal = sCanal;
	}

	/**
	 * Gets the s banco int.
	 * 
	 * @return the sBancoInt
	 */
	@NotNull
	@NotEmpty
	@Length(min = 4, max = 4)
	public String getsBancoInt() {
		return sBancoInt;
	}

	/**
	 * Sets the s banco int.
	 * 
	 * @param sBancoInt
	 *            the sBancoInt to set
	 */
	public void setsBancoInt(final String sBancoInt) {
		this.sBancoInt = sBancoInt;
	}

	/**
	 * Gets the s referencia.
	 * 
	 * @return the sReferencia
	 */
	@NotNull
	@NotEmpty
	@Length(min = 8, max = 8)
	public String getsReferencia() {
		return sReferencia;
	}

	/**
	 * Sets the s referencia.
	 * 
	 * @param sReferencia
	 *            the sReferencia to set
	 */
	public void setsReferencia(final String sReferencia) {
		this.sReferencia = sReferencia;
	}

	/**
	 * Gets the s cod usuario.
	 * 
	 * @return the sCodUsuario
	 */
	@NotNull
	@NotEmpty
	@Length(min = 1, max = 8)
	public String getsCodUsuario() {
		return sCodUsuario;
	}

	/**
	 * Sets the s cod usuario.
	 * 
	 * @param sCodUsuario
	 *            the sCodUsuario to set
	 */
	public void setsCodUsuario(final String sCodUsuario) {
		this.sCodUsuario = sCodUsuario;
	}

	/**
	 * Gets the s nif usuario.
	 * 
	 * @return the sNIFUsuario
	 */
	// @NotEmpty
	public String getsNIFUsuario() {
		return sNIFUsuario;
	}

	/**
	 * Sets the s nif usuario.
	 * 
	 * @param sNIFUsuario
	 *            the sNIFUsuario to set
	 */
	public void setsNIFUsuario(final String sNIFUsuario) {
		this.sNIFUsuario = sNIFUsuario;
	}

	/**
	 * Gets the codigo origen
	 * 
	 * @return the codigo origen
	 */
	@NotNull
	@NotEmpty
	public String getsCodOrigen() {
		return sCodOrigen;
	}

	/**
	 * Sets the codigo origen
	 * 
	 * @param sCodOrigen
	 *            the codigo origen to set
	 */
	public void setsCodOrigen(final String sCodOrigen) {
		this.sCodOrigen = sCodOrigen;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return new StringBuilder("InfoUserReferenceUpdate [sTipoFirma=").append(sTipoFirma)
				.append(", sCanal=").append(sCanal)
				.append(", sBancoInt=").append(sBancoInt)
				.append(", sReferencia=").append(sReferencia)
				.append(", sCodUsuario=").append(sCodUsuario)
				.append(", sNIFUsuario=").append(sNIFUsuario)
				.append(", sBancoProducto=").append(sBancoProducto)
				.append(", sProductoServicio=").append(sProductoServicio)
				.append(", sCodSubProducto=").append(sCodSubProducto)
				.append(", sTipoFirmante=").append(sTipoFirmante)
				.append(", sCodOrigen=").append(sCodOrigen).append("]").toString();
	}
}
